//#include "BreakOut.h"
//#include <stdlib.h>
//#include <ctime>
//
//const int numbrick =30;
//
//BreakOut::BreakOut(HINSTANCE hInstance, LPCWSTR GameName, LPSTR lpCmdLine, int nShowCmd, int FPS, int ScreenWidth, int ScreenHeight)
//	:Game(hInstance, GameName, lpCmdLine, nShowCmd, FPS, ScreenWidth, ScreenHeight)
//{
//	tree = QuadTree(_screenWidth,_screenHeight);
//}
//
//BreakOut::~BreakOut(void)
//{
//	delete ball;
//	delete paddle;	
//}
//
//void BreakOut::LoadResource()
//{
//	_rm = new CResourceManager(_directX);
//	_rm->LoadResource();
//
//	ball = new Ball(200,200,50,50,1.5f,1.5f,1000/_FPS,this->_directX->getSpriteHandler(),_rm->getballTexture());
//	//paddle = new Paddle(400,574,90,26,1,1,1000/_FPS,this->_directX->getSpriteHandler(),_rm->getPaddleTexture());
//	paddle = new Paddle(400,574,90,26,1,1,1000/_FPS,this->_directX->getSpriteHandler(),_rm->getPaddleTexture());
//
//	bricklist = BrickList(numbrick);
//	//bricklist.Add(300,300,48,48,_directX->getSpriteHandler(),_rm->getBrickTexture());
//	int a,b,c;
//	for (int i=0;i<numbrick;i++)
//	{
//		bricklist.Add(rand()%800,rand()%600,48,48,_directX->getSpriteHandler(),_rm->getBrickTexture());
//		tree.add(bricklist.Get(i));
//	}
//}
//
//void BreakOut::GameUpdate()
//{
//	ball->Move();
//	if (_coll.isCollided(ball,paddle))
//	{
//		//ball->setVelocity(Vector(ball->getVelocityVector().getX(),-(ball->getVelocityVector().getY())));
//	//	//ball->setVelocity(-ball->getVelocityVector());
//	//	//MessageBox(NULL,L"Collided",L"Thongbao",MB_OK);
//	//	//isRunning = false;
//	//	//tmp = false;
//	/*	if (ball->_enablePushBackVector == true)
//		{*/
//			/*ball->Translate(ball->getPushBackVector());
//			ball->_enablePushBackVector = false;*/
//		//}
//	}
//	paddle->setVelocity(Vector());
//	
//	RECT rec = ball->getRect();
//	//std::set<GObject*> v = tree.getRoot()->getAllObjectList();
//	std::set<GObject*> v = tree.getRoot()->getCollidableObject(ball->getRect());
//
//	/*for (int i=0;i<numbrick;i++)
//		_coll.isCollided(ball,bricklist.Get(i));*/
//
//
//
//	for (std::set<GObject*>::iterator i= v.begin();i != v.end(); i++)
//	{
//		_coll.isCollided(ball,(*i));
//		for (std::set<GObject*>::iterator j=v.begin(); j != v.end(); j++)
//		{
//			if (i != j)
//				_coll.isCollided((MovingObject*)(*i),(*j));
//		}
//	}
//
//	tree.update(tree.checkCollision(tree.getRoot(),tree.getRoot()->getRect()));
//
//
//
//	/*for (int i=0;i< numbrick;i++)
//	{
//		_coll.isCollided(ball,bricklist.Get(i));
//		_coll.isCollided(paddle,bricklist.Get(i));
//	}
//
//	for (int i=0;i<numbrick - 1;i++)
//		for (int j=1;j<numbrick;j++)
//			_coll.isCollided((MovingObject*)bricklist.Get(i),bricklist.Get(j));*/
//
//}
//
//void BreakOut::OnKeyDown(int KeyCode)
//{
//	switch (KeyCode)
//	{
//	case DIK_LEFT:
//		{
//			paddle->MoveLeft();
//			break;
//		}
//	case DIK_RIGHT:
//		{
//			paddle->MoveRight();
//			break;
//		}
//
//	case DIK_A:
//		{
//			bricklist.Get(0)->Translate(Vector(-3.f,0.f));
//			break;
//		}
//		case DIK_D:
//		{
//			bricklist.Get(0)->Translate(Vector(3.f,0.f));
//			break;
//		}
//
//		case DIK_W:
//		{
//			bricklist.Get(0)->Translate(Vector(0.f,-3.f));
//			break;
//		}
//		case DIK_S:
//		{
//			bricklist.Get(0)->Translate(Vector(0.f,3.f));
//			break;
//		}
//	
//	}
//	/*case DIK_SPACE:
//		this->GameUpdate();*/
//}
//
//void BreakOut::RenderFrame()
//{
//	paddle->Render();
//	ball->Render();
//	//bricklist.Render(); 
//	//std::set<GObject*> l = tree.getRoot()->getAllObjectList();
//	RECT rect = RECT();
//	rect.top = 500;
//	rect.left = 500;
//	rect.bottom = 100 + 10;
//	rect.right = 100 + 10;
//	std::set<GObject*> l = tree.getRoot()->getCollidableObject(ball->getRect());
//	int k = 0;
//	for (std::set<GObject*>::iterator i= l.begin();i != l.end();i++)
//	{
//		if ((*i) != NULL)
//		{
//			(*i)->Render();
//			k++;
//		}
//	}
//	bricklist.Get(0)->Render();
//	//bricklist.Get(0)->Render();
//	/*if (brick != NULL);
//		brick->Render();*/
//	/*for (int i=0;i< numbrick;i++)
//		bricklist.Get(i)->Render();*/
//}